package com.justgame.project.service.art.service.basic;

import com.justgame.project.service.art.entity.ArtPageComment;
import com.justgame.project.service.art.query.ArtPageCommentQuery;
import com.justgame.project.service.art.wrapper.ArtPageCommentWrapper;
import com.justgame.project.base.servcice.IBasicService;
import java.lang.Long;
import org.springframework.util.Assert;
import org.springframework.lang.NonNull;
import java.lang.Boolean;
import java.lang.String;

/**
 *
 * 文章评论表服务自定义查询类
 *
 * @@tableName art_page_comment
 * @author Zwb
 */
@SuppressWarnings("all")
public interface BasicArtPageCommentService extends IBasicService<ArtPageCommentQuery,ArtPageComment,ArtPageCommentWrapper> {

   /**
    * 新增创建
    * @param parentId 父级评论
    * @param ancestors 族谱
    * @param pageId 文章信息
    * @param content 内容
    * @param type 类型
    * @param isRemove 是否被显性删除
    * @param isPixelate 是否匿名
    */
   default ArtPageComment baseAdd(Long parentId, String ancestors, Long pageId, String content, ArtPageComment.Type type, Boolean isRemove, Boolean isPixelate){
      ArtPageComment artPageComment = new ArtPageComment();
      artPageComment.setParentId(safeValue(parentId, null));
      artPageComment.setAncestors(safeValue(ancestors, null));
      artPageComment.setPageId(safeValue(pageId, null));
      artPageComment.setContent(safeValue(content, null));
      artPageComment.setType(safeValue(type, null));
      artPageComment.setIsRemove(safeValue(isRemove, null));
      artPageComment.setIsPixelate(safeValue(isPixelate, null));
      save(artPageComment);
      return artPageComment;
   }

   /**
    * 更新
    * @param parentId 父级评论
    * @param ancestors 族谱
    * @param pageId 文章信息
    * @param content 内容
    * @param type 类型
    * @param isRemove 是否被显性删除
    * @param isPixelate 是否匿名
    */
   default boolean baseUpdate(@NonNull ArtPageComment artPageComment,Long parentId, String ancestors, Long pageId, String content, ArtPageComment.Type type, Boolean isRemove, Boolean isPixelate){
      Assert.notNull(ancestors,"必须提供族谱");
      Assert.notNull(isRemove,"必须提供是否被显性删除");
      Assert.notNull(parentId,"必须提供父级评论");
      Assert.notNull(content,"必须提供内容");
      Assert.notNull(type,"必须提供类型");
      Assert.notNull(pageId,"必须提供文章信息");
      Assert.notNull(isPixelate,"必须提供是否匿名");
      Assert.notNull(artPageComment.getId(),"必须提供主键ID");
      artPageComment.setParentId(safeValue(parentId, null));
      artPageComment.setAncestors(safeValue(ancestors, null));
      artPageComment.setPageId(safeValue(pageId, null));
      artPageComment.setContent(safeValue(content, null));
      artPageComment.setType(safeValue(type, null));
      artPageComment.setIsRemove(safeValue(isRemove, null));
      artPageComment.setIsPixelate(safeValue(isPixelate, null));
      return updateById(artPageComment);
   }

}